#!/bin/bash

# 生产环境启动脚本

# 确保脚本以非root用户运行
if [ "$(id -u)" = "0" ]; then
   echo "警告：不建议以root用户运行此应用。请使用普通用户运行。"
   echo "按 Ctrl+C 取消，或按任意键继续..."
   read -n 1 -s
fi

# 配置参数
APP_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
VENV_DIR="${APP_DIR}/venv"
WORKERS=3  # 根据服务器CPU核心数调整，通常为 (2 x CPU核心数) + 1
PORT=5000
LOG_DIR="${APP_DIR}/logs"

# 确保日志目录存在
sudo mkdir -p "${LOG_DIR}"
sudo chown -R "$(whoami):$(whoami)" "${LOG_DIR}"

# 激活虚拟环境
if [ -d "${VENV_DIR}" ]; then
    echo "激活虚拟环境..."
    source "${VENV_DIR}/bin/activate"
else
    echo "警告：虚拟环境不存在。请先创建虚拟环境并安装依赖。"
    echo "尝试直接运行应用..."
fi

# 检查是否安装了 Gunicorn
if ! command -v gunicorn &> /dev/null; then
    echo "Gunicorn 未安装，正在安装..."
    pip install gunicorn
fi

# 启动应用
 echo "正在启动 Issue Tracker 应用..."
 echo "访问日志: ${LOG_DIR}/access.log"
 echo "错误日志: ${LOG_DIR}/error.log"

gunicorn \
    --workers ${WORKERS} \
    --bind 0.0.0.0:${PORT} \
    --access-logfile "${LOG_DIR}/access.log" \
    --error-logfile "${LOG_DIR}/error.log" \
    --log-level info \
    --timeout 300 \
    app:app

# 如果Gunicorn启动失败，尝试使用Waitress作为备选
if [ $? -ne 0 ]; then
    echo "Gunicorn启动失败，尝试使用Waitress..."
    if ! command -v waitress-serve &> /dev/null; then
        echo "Waitress 未安装，正在安装..."
        pip install waitress
    fi
    
    waitress-serve \
        --host=0.0.0.0 \
        --port=${PORT} \
        app:app
fi